package hot_100;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Queue;

/**
 * @author: Darven
 * @createTime: 2025-10-03  18:06
 * @description: TODO
 */
public class P104 {

    // 递归
//    public int maxDepth(TreeNode root) {
//        return  inorderDepth(root);
//    }
//
//    private int inorderDepth(TreeNode root){
//        if(root==null) return 1;
//
//        int left = inorderDepth(root.left);
//
//        int right = inorderDepth(root.right);
//
//        return left>right?left+1:right+1;
//
//    }

    // 遍历,广度优先搜索，前序遍历
    public int maxDepth(TreeNode root) {
        if(root==null) return 0;
        Queue<TreeNode> queue=new ArrayDeque<>();
        int ans=0;
        queue.offer(root);

        while (!queue.isEmpty()){
            int size= queue.size();
            while (size>0){
                TreeNode node = queue.poll();
                if(node.left!=null){
                    queue.offer(node.left);
                }

                if(node.right!=null){
                    queue.offer(node.right);
                }

                size--;
            }
            ans++;
        }

        return ans;
    }

}
